#include<stdio.h>
#include<string.h>

#define ONE_FLAG (1 << 0) // 0000 0000 0000 ..... 0000 0001
#define TWO_FLAG (1 << 1) // 0000 0000 0000 ..... 0000 0010
#define THREE_FLAG (1 << 2) // 0000 0000 0000 ..... 0000 0100
#define FOUR_FLAG (1 << 3) // 0000 0000 0000 ..... 0000 1000    
void print(int flags)
{
        if(flags & ONE_FLAG)
        {
                printf("One!\n");
        }
        if(flags & TWO_FLAG)
        {
                printf("Two!\n");
        }
        if(flags & THREE_FLAG)
        {
                printf("Three!\n");
        }
        if(flags & FOUR_FLAG)
        {
                printf("Four!\n");
        }
}

int main()
{
        print(ONE_FLAG);
        print(TWO_FLAG);
        print(THREE_FLAG | FOUR_FLAG);
        print(ONE_FLAG | TWO_FLAG | THREE_FLAG);
        return 0;
}

//int main()
//{
//        FILE *fp = fopen("log.txt", "a");
//        if(fp == NULL)
//        {
//                perror("fopen");
//                return 1;
//        }
//        const char *msg = "hello world\n";
//        fprintf (fp, "%s", msg);
//        fclose(fp);
//        return 0;
//}

//int main()
//{
//        FILE *fp = fopen("log.txt", "w");
//        if(fp == NULL)
//        {
//                perror("fopen");
//                return 1;
//        }
//        fclose(fp);
//        return 0;
//}

//int main()
//{
//	printf("hello world\n");
//	fprintf(stdout, "hello fprintf\n");
//	const char* msg = "hello fwrite\n";
//	fwrite(msg, strlen(msg), 1, stdout);
//	return 0;
//}

//int main()
//{
//	FILE* fp = fopen("log.txt", "r");
//	if(!fp)
//	{
//		printf("fopen error!\n");
//		return 1;
//	}
//
//	char buf[1024];
//	const char* msg = "hello zxl!\n";
//
//	while(1)
//	{
//		ssize_t s = fread(buf, 1, strlen(msg), fp);
//		if(s > 0)
//		{
//			buf[s] = 0;
//			printf("%s", buf);
//		}
//		if(feof(fp))
//		{
//			break;
//		}
//	}
//	fclose(fp);
//
//	return 0;
//}


//int main()
//{
//        FILE* fp = fopen("log.txt", "w");
//        if(fp == NULL)
//        {
//                perror("fopen");
//                return 1;
//        }
//        const char *msg = "hello zxl: ";
//        int cnt = 1;
//        while(cnt <= 10)
//        {
//                char buffer[1024];
//                snprintf(buffer, sizeof(buffer), "%s %d\n", msg, cnt++);
//                fwrite(buffer, strlen(buffer), 1, fp);
//        }
//        fclose(fp);
//        return 0;
//}
